package mlz.b_constructor;

/*
    构造器是什么:
    a.构造器其实就是一个特殊的方法, 特殊的点就在于 方法没有返回值类型 + 方法名必须和类名相同
    b.new对象的时候就是在执行构造方法
    c.就是用来创建对象,可以在创建对象的时候给对象的属性做一些初始化的操作
 */
public class Student {
    //成员变量
    int age; //0
    String name; //null

    //添加构造方法 -> 无参构造方法
    //程序会默认添加无参构造方法
    public Student(){
        //表示调用空参构造方法本身
        this(18,"lucy");
        System.out.println("这是手动创建的无参构造方法");
    }

    //有参构造方法
    public Student(int age,String name){
        //this();
        System.out.println("这是手动创建的有参构造方法");

        //如果是在方法内部出现变量重名的情况,就会采用就近原则使用变量

        //给成员变量做赋值操作
        this.age = age;
        this.name = name;
    }


    //成员方法
    public void eat(){
        System.out.println("吃饭");
        //表示调用当前对象的方法
        this.printThis();
    }


    //打印当前对象
    public void printThis(){
        //当前对象的引用 -> 哪一个对象调用我(this),我就表示哪一个对象
        System.out.println(this);
    }
}
